/* -*-jde-*- */
/* <TestCobbled.java> */
package Practica2.cobbled;

import java.io.IOException;

/**
 * Clase de prueba para el uso de las clases Cobbled y SquaresBoard.
 *
 * @author  Carrillo Espinosa Ernesto
 * @author  Peralta Santa Anna Victor Miguel
 * @since	Julio 2011
 */
public class TestCobbled extends Cobbled {

    /**
     * Cuadricula 
     */
    private int[][] grid;
    /**
     * Coordenadas para el cuadrado especial
     */
    private int x, y;

    /**
     * Da un ejemplar de la clase. El tamaño del tablero debe de ser potencia de 2.
     *
     * @param n el tamaño del tablero
     * @param x la posicion a lo ancho del cuadro especial
     * @param y la posicion a lo largo del cuadro especial
     */
    public TestCobbled(int n, int x, int y) throws IOException {
        super(n);
        this.grid = new int[n][n];
        this.x = x;
        this.y = y;
    }

    /**
     * Un ejemplo de coloreo para la cuadricula recursiva
     *
     * @return Un ejemplar de la cuadricula coloreada.
     */
    @Override
    public int[][] recursiveCobbled() {
        auxRecursiveCobbled();
        return grid;
    }

    /**
     * Aqui coloreamos la cuadricula con los colores que queremos.
     */
    private void auxRecursiveCobbled() {

        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid.length; j++) {
                grid[i][j] = ((i + j) % 2) + 1;
            }
        }

        grid[x][y] = 0; // cuadrado especial
    }

    /**
     * Un ejemplo de coloreo para la cuadricula iterativa.
     * 
     * @return Un ejemplar de la cuadricula coloreada.
     */
    @Override
    public int[][] iterativeCobbled() {
        auxIterativeCobbled();
        return grid;
    }
    
 
    /**
     * Aqui coloreamos la cuadricula con los colores que queremos.
     */
    private void auxIterativeCobbled() {

        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid.length; j++) {
                grid[i][j] = ((i + j) % 2) + 2;
            }
        }
        
        
        
        grid[x][y] = 0; // cuadrado especial
        
        
        
        
    }

    /**
     * Método para la prueba de la clase
     *
     * @param args argumentos de la linea de comandos
     */
    public static void main(String[] args) {
        try {

            new TestCobbled(8, 5, 5);

        } catch (IOException ioe) {
            System.err.println(ioe.toString() + "\n\n");
        }
    }
}
